\section{Lösungsstrategie}
%Wie funktioniert die Lösung? Was sind die fundamentalen Lösungsansätze?

Das System wird in einzelne Komponenten aufgeteilt, die Klassen enthalten werden, die zusammen einen Teilaspekt der Software kapseln und bereitstellen. Insgesamt erfolgt diese Aufteilung nach dem Model-View-Controller-Architekturmuster, das die klare Trennung sowohl von Zuständigkeiten innerhalb des Systems als auch dessen Bestandteilen gewährleistet. Es ermöglicht zudem die Wiederverwendbarkeit und Austauschbarkeit einzelner Komponenten.

So wird eine UI-Komponente solche Klassen beinhalten, die das Benutzer-Interface erzeugen und die Darstellung der Daten sowie die Interaktion des Nutzers mit dem System in Form von einem Webfrontend gewährleisten.
Eine Model-Komponente beinhaltet alle zur Kapselung von Geschäftsobjekten verwendbaren Klassen, etwa eine Teilnehmer-, Paper- oder Konferenz-Klasse. Die Daten im Model werden in einer Datenbank persistiert. Die Klassen der Entities enthalten \emph{keine} Programmlogik, die über das Setzen oder Holen (Getter und Setter) der Daten herausgehen.

Die Logik ist in der Controllerkomponente ausschließlich enthalten, während diese jedoch etwas verwaschen aufgeteilt ist in zustandslose Java-Beans und die Servlets der UI-Komponente. Hier werden Daten aus den Views zum einen eingeholt und verarbeitet als auch ausgegeben abhängig von den Eingaben.

Die Persistierung der Daten passiert implizit im Controller durch die Nutzung von \gls{JPA} 2.0.

Insgesamt ermöglicht die Aufteilung des Systems in einzelne Komponenten deren Wiederverwendbarkeit, da beispielsweise das komplette Controlling-Teilsystem auch an einer anderen Stelle genutzt werden könnte. Ebenso wird die Austauschbarkeit einzelner Teile der Anwendung gewährleistet. So kann die gesamte UI-Komponente ausgetauscht werden durch eine externe Komponente, die z. B. andere Frameworks oder Bibliotheken nutzt und die gleichen zugrunde liegenden Geschäftsobjekte anders darstellt.

Schließlich wird die Lesbarkeit und Übersichtlichkeit des Quellcodes durch eine klare Erkennbarkeit der Zuständigkeiten verbessert.

